﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using T.ApprovalRecord;
using T.Personnel.Domain;
using T.Personnel.Domain.Dto;

namespace T.Personnel.Repository.Interface
{
    public interface IManageRepository:IRepository<Manage>
    {
        Task<Result<Manage>> GetEntryAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? CreatedDate, string? AppStatus, int PageIndex, int PageSize);
        Task<Result<Manage>> GetEntrysAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? CreatedDate, string? AppStatus, int PageIndex, int PageSize, int? Stat);
        Task<Manage> GetEntryAsync(int id);
        Task<int> DelEntryAsync(int id, string name);
        Task<int> UpdEntryAsync(Manage manage);
        Task<int> AddEntryAsync(Manage manage);
        Task<Result<Manage>> GetResignationAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? LastDay, string? AppStatus, int PageIndex, int PageSize);
        Task<Result<Manage>> GetResignationsAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? LastDay, string? AppStatus, int PageIndex, int PageSize, int? Stat);
        Task<Manage> GetResignationAsync(int id);
        Task<int> DelResignationAsync(int id, string name);
        Task<int> UpdResignationAsync(Manage manage);
        Task<int> AddResignationAsync(Manage manage);
        Task<Result<Manage>> GetFullAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? ApplicationDate, string? AppStatus, int PageIndex, int PageSize);
        Task<Result<Manage>> GetFullsAsync(string? Name, int? DepartmentId, int? PositionId, DateTime? Hiredate, DateTime? ApplicationDate, string? AppStatus, int PageIndex, int PageSize, int? Stat);
        Task<Manage> GetFullAsync(int id);
        Task<int> DelFullAsync(int id, string name);
        Task<int> UpdFullAsync(Manage manage);
        Task<int> AddFullAsync(Manage manage);
        Task<List<Manage>> GetAllResignationAsync();
        Task<List<Manage>> GetAllEntryAsync();
    }
}